﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace WCS.Infrastructure.Dto.Response.Coupon
{
    /// <summary>
    /// 优惠券模板详情响应对象（包含模板全部字段 + 已失效实例数量）
    /// </summary>
    public class CouponTemplateDetailResponseDto
    {
        public string Id { get; set; } = null!;
        public string TemplateCode { get; set; } = null!;
        public string Name { get; set; } = null!;
        public int? SchemeType { get; set; }
        public int CouponType { get; set; }
        public long? DiscountAmount { get; set; }
        public decimal? Discount { get; set; }
        public long? UseThresholdAmount { get; set; }
        public decimal? PlatformServiceFeeRate { get; set; }
        public DateTime ReceiveStartTime { get; set; }
        public DateTime ReceiveEndTime { get; set; }
        public int ValidityType { get; set; }
        public DateTime? ValidityStartTime { get; set; }
        public DateTime? ValidityEndTime { get; set; }
        public int? ValidityDuration { get; set; }
        public int EffectiveDelayType { get; set; }
        public int? EffectiveDelayValue { get; set; }
        public int UseFrequencyType { get; set; }
        public int UseFrequencyLimit { get; set; }
        public int Total { get; set; }
        public int UsedCount { get; set; }
        public int MaxIssuePerUser { get; set; }
        public string MerchantId { get; set; } = null!;
        public string? StoreId { get; set; }
        public string? ExtraProperties { get; set; }
        public string? ConcurrencyStamp { get; set; }
        public DateTime CreationTime { get; set; }
        public string? CreatorId { get; set; }
        public DateTime? LastModificationTime { get; set; }
        public string? LastModifierId { get; set; }
        public bool IsDeleted { get; set; }
        public string? DeleterId { get; set; }
        public DateTime? DeletionTime { get; set; }
        public int EnableStatus { get; set; }
        public string? CodeId { get; set; }
        public string? PosterUrl { get; set; }
        public int? QuantityIssued { get; set; }

        /// <summary>
        /// 已失效的优惠券实例数量（Status=3）
        /// </summary>
        public int ExpiredInstanceCount { get; set; }
        public bool? IsPush { get; set; }
    }
}
